/*******************************************************************************
  * 文件：Hardware_Timer.c
  * 作者：zyz
  * 版本：v1.0.0
  * 日期：2017-08-03
  * 说明：定时器相关
*******************************************************************************/

/* 头文件 *********************************************************************/
#include "Hardware_Timer.h"
#include "lib_config.h"

/*******************************************************************************
  * 函数名: T16N2Init
  * 功  能：T16N2初始化
  * 参  数：无
  * 返回值：无
  * 说  明：定时时间间隔1MS
*******************************************************************************/
//static void T16N2Init(void)
//{
//    extern uint32_t SystemCoreClock;
//    TIM_BaseInitStruType x;
//
//    x.TIM_ClkS = TIM_ClkS_PCLK;
//    x.TIM_SYNC = DISABLE;
//    x.TIM_EDGE = TIM_EDGE_Rise;
//    x.TIM_Mode = TIM_Mode_TC0;
//
//    T16Nx_BaseInit(T16N2,&x);
//    T16Nx_SetPREMAT(T16N2,SystemCoreClock/1000000);//48分频
//    T16Nx_SetMAT0(T16N2,500);//500us
//
//    NVIC_Init(NVIC_T16N2_IRQn,NVIC_Priority_3,ENABLE);
//    T16Nx_MAT0ITConfig(T16N2,TIM_Clr_Int);
//    T16Nx_ITConfig(T16N2,TIM_IT_MAT0,ENABLE);
//    T16N2_Enable();
//}

/*******************************************************************************
  * 函数名：SysTickInit
  * 功  能：系统滴答定时器初始化
  * 参  数：无
  * 返回值：无
  * 说  明：定时时间1MS
*******************************************************************************/
static void SysTickInit(void)
{
    SYSTICK_InitStruType x;
    memset(&x, 0, sizeof(x));

    x.SysTick_Value = SystemCoreClock / 1000; 
    x.SysTick_ClkSource = SysTick_ClkS_Cpu;
    x.SysTick_ITEnable = ENABLE;
    SysTick_Init(&x);
    
    SysTick_Enable();
}

/*******************************************************************************
  * 函数名：Hardware_T16N2Enable
  * 功  能：初始定时器
  * 参  数：无
  * 返回值：无
  * 说  明：无
*******************************************************************************/
void Hardware_T16N2Enable(void)
{
    T16N2_Enable();
}

/*******************************************************************************
  * 函数名：Hardware_InitTimer
  * 功  能：初始定时器
  * 参  数：无
  * 返回值：无
  * 说  明：无
*******************************************************************************/
void Hardware_T16N2Disable(void)
{
    T16N2_Disable();
}

/*******************************************************************************
  * 函数名：Hardware_InitTimer
  * 功  能：初始定时器
  * 参  数：无
  * 返回值：无
  * 说  明：无
*******************************************************************************/
void Hardware_InitTimer(void)
{
    SysTickInit();
    // T16N2Init();
}

